home *** CD-ROM | disk | FTP | other *** search
Oberon Document | 1995-06-15 | 13.8 KB | 334 lines | [oODC/obnF] |
- Documents.StdDocumentDesc
- Documents.DocumentDesc
- Containers.ViewDesc
- Views.ViewDesc
- Stores.StoreDesc
- Documents.ModelDesc
- Containers.ModelDesc
- Models.ModelDesc
- Stores.ElemDesc
- TextViews.StdViewDesc
- TextViews.ViewDesc
- TextModels.StdModelDesc
- TextModels.ModelDesc
- TextModels.AttributesDesc
- Geneva
- Geneva
- StdStamps.StdViewDesc
- Geneva
- Geneva
- MODULE MacMemoryMgr;
- (* cp
- IMPORT SYSTEM, MacTypes;
- CONST
- CODE = 1; NOSTKCHK = 4;
- D0 = 0; A0 = 8; A1 = 9;
- ApplLimit = 130H;
- SysZone = 2A6H;
- AppZone = 2AAH;
- GZRootHnd = 328H;
- MemTop = 108H;
- TYPE
- Ptr* = MacTypes.Ptr;
- Handle* = MacTypes.Handle;
- Size* = LONGINT;
- Zone* = RECORD (MacTypes.Data)
- bkLim*: Ptr;
- purgePtr: Ptr;
- hFstFree*: Ptr;
- zcbFree*: LONGINT;
- gzProc*: MacTypes.ProcPtr;
- moreMast*: INTEGER;
- flags: MacTypes.Set;
- cntRel, maxRel, cntNRel, maxNRel, cntEmpty, cntHandles: INTEGER;
- minCBFree: LONGINT;
- purgeProc*: MacTypes.ProcPtr;
- sparePtr, allocPtr: MacTypes.ProcPtr;
- heapData*: INTEGER
- END;
- THz* = POINTER TO Zone;
- VAR err*: INTEGER;
- PROCEDURE [CODE] setApplBase 0A0H, 057H;
- PROCEDURE [CODE] initZone 0A0H, 019H;
- PROCEDURE [CODE] setApplLimit 0A0H, 02DH;
- PROCEDURE [CODE] maxApplZone 0A0H, 063H;
- PROCEDURE [CODE] moreMasters 0A0H, 036H;
- PROCEDURE [CODE] getZone 0A1H, 01AH;
- PROCEDURE [CODE] setZone 0A0H, 01BH;
- PROCEDURE [CODE] newHandle 0A1H, 022H;
- PROCEDURE [CODE] disposHandle 0A0H, 023H;
- PROCEDURE [CODE] getHandleSize 0A0H, 025H;
- PROCEDURE [CODE] setHandleSize 0A0H, 024H;
- PROCEDURE [CODE] handleZone 0A1H, 026H;
- PROCEDURE [CODE] recoverHandle 0A1H, 028H;
- PROCEDURE [CODE] reallocHandle 0A0H, 027H;
- PROCEDURE [CODE] newPtr 0A1H, 01EH;
- PROCEDURE [CODE] newPtrClear 0A3H, 01EH;
- PROCEDURE [CODE] disposPtr 0A0H, 01FH;
- PROCEDURE [CODE] getPtrSize 0A0H, 021H;
- PROCEDURE [CODE] setPtrSize 0A0H, 020H;
- PROCEDURE [CODE] ptrZone 0A1H, 048H;
- PROCEDURE [CODE] freeMem 0A0H, 01CH;
- PROCEDURE [CODE] maxMem 0A1H, 01DH;
- PROCEDURE [CODE] compactMem 0A0H, 04CH;
- PROCEDURE [CODE] resrvMem 0A0H, 040H;
- PROCEDURE [CODE] purgeMem 0A0H, 04DH;
- PROCEDURE [CODE] emptyHandle 0A0H, 02BH;
- PROCEDURE [CODE] hLock 0A0H, 029H;
- PROCEDURE [CODE] hUnlock 0A0H, 02AH;
- PROCEDURE [CODE] hPurge 0A0H, 049H;
- PROCEDURE [CODE] hNoPurge 0A0H, 04AH;
- PROCEDURE [CODE] setGrowZone 0A0H, 04BH;
- PROCEDURE [CODE] blockMove 0A0H, 02EH;
- PROCEDURE [CODE] moveHHi 0A0H, 064H;
- PROCEDURE [CODE] handToHand 0A9H, 0E1H;
- PROCEDURE [CODE] ptrToHand 0A9H, 0E3H;
- PROCEDURE [CODE] ptrToXHand 0A9H, 0E2H;
- PROCEDURE [CODE] handAndHand 0A9H, 0E4H;
- PROCEDURE [CODE] ptrAndHand 0A9H, 0EFH;
- PROCEDURE [CODE] maxBlock 0A0H, 061H;
- PROCEDURE [CODE] purgeSpace 0A0H, 062H;
- PROCEDURE [CODE] stackSpace 0A0H, 065H;
- YSTEM.GETREG(D0, res);
- IF res >= 0 THEN
- err := 0
- ELSE
- err := SHORT(res); res := 0
- END;
- RETURN res
- END GetPtrSize;
- PROCEDURE [NOSTKCHK] SetPtrSize* (p: Ptr; newSize: Size);
- BEGIN
- SYSTEM.PUTREG(A0, p);
- SYSTEM.PUTREG(D0, newSize);
- setPtrSize;
- SYSTEM.GETREG(D0, err)
- END SetPtrSize;
- PROCEDURE [NOSTKCHK] PtrZone* (p: Ptr): THz;
- VAR t: THz;
- BEGIN
- SYSTEM.PUTREG(A0, p);
- ptrZone;
- SYSTEM.GETREG(D0, err);
- SYSTEM.GETREG(A0, t);
- RETURN t
- END PtrZone;
- (** Freeing Space in the Heap **)
- PROCEDURE [NOSTKCHK] FreeMem* (): LONGINT;
- VAR size: Size;
- BEGIN
- freeMem;
- err := 0;
- SYSTEM.GETREG(D0, size);
- RETURN size
- END FreeMem;
- PROCEDURE [NOSTKCHK] MaxMem* (VAR grow: Size): Size;
- VAR size: Size;
- BEGIN
- maxMem;
- err := 0;
- SYSTEM.GETREG(A0, grow);
- SYSTEM.GETREG(D0, size);
- RETURN size
- END MaxMem;
- PROCEDURE [NOSTKCHK] CompactMem* (cbNeeded: Size): Size;
- VAR size: Size;
- BEGIN
- SYSTEM.PUTREG(D0, cbNeeded);
- compactMem;
- err := 0;
- SYSTEM.GETREG(D0, size);
- RETURN size
- END CompactMem;
- PROCEDURE [NOSTKCHK] ResrvMem* (cbNeeded: Size);
- BEGIN
- SYSTEM.PUTREG(D0, cbNeeded);
- resrvMem;
- SYSTEM.GETREG(D0, err)
- END ResrvMem;
- PROCEDURE [NOSTKCHK] PurgeMem* (cbNeeded: Size);
- BEGIN
- SYSTEM.PUTREG(D0, cbNeeded);
- purgeMem;
- SYSTEM.GETREG(D0, err)
- END PurgeMem;
- PROCEDURE [NOSTKCHK] EmptyHandle* (h: Handle);
- BEGIN
- SYSTEM.PUTREG(A0, h);
- emptyHandle;
- SYSTEM.GETREG(D0, err)
- END EmptyHandle;
- (** Properties of Relocatable Blocks **)
- PROCEDURE [NOSTKCHK] HLock* (h: Handle);
- BEGIN
- SYSTEM.PUTREG(A0, h);
- hLock;
- SYSTEM.GETREG(D0, err)
- END HLock;
- PROCEDURE [NOSTKCHK] HUnlock* (h: Handle);
- BEGIN
- SYSTEM.PUTREG(A0, h);
- hUnlock;
- SYSTEM.GETREG(D0, err)
- END HUnlock;
- PROCEDURE [NOSTKCHK] HPurge* (h: Handle);
- BEGIN
- SYSTEM.PUTREG(A0, h);
- hPurge;
- SYSTEM.GETREG(D0, err)
- END HPurge;
- PROCEDURE [NOSTKCHK] HNoPurge* (h: Handle);
- BEGIN
- SYSTEM.PUTREG(A0, h);
- hNoPurge;
- SYSTEM.GETREG(D0, err)
- END HNoPurge;
- (** Grow Zone Operations **)
- PROCEDURE [NOSTKCHK] SetGrowZone* (growZone: MacTypes.ProcPtr);
- BEGIN
- SYSTEM.PUTREG(A0, growZone);
- setGrowZone;
- SYSTEM.GETREG(D0, err)
- END SetGrowZone;
- PROCEDURE [NOSTKCHK] GZSaveHnd* (): Handle;
- VAR h: Handle;
- BEGIN
- SYSTEM.MOVE(GZRootHnd, SYSTEM.ADR(h), 4);
- RETURN h
- END GZSaveHnd;
- (** Miscellaneous Operations **)
- PROCEDURE [NOSTKCHK] BlockMove* (srcPtr, destPtr: Ptr; byteCount: Size);
- BEGIN
- SYSTEM.PUTREG(A0, srcPtr);
- SYSTEM.PUTREG(A1, destPtr);
- SYSTEM.PUTREG(D0, byteCount);
- blockMove;
- SYSTEM.GETREG(D0, err)
- END BlockMove;
- PROCEDURE [NOSTKCHK] TopMem* (): Ptr;
- VAR p: Ptr;
- BEGIN
- SYSTEM.MOVE(MemTop, SYSTEM.ADR(p), 4);
- RETURN p
- END TopMem;
- PROCEDURE [NOSTKCHK] MoveHHi* (h: MacTypes.Handle);
- BEGIN
- SYSTEM.PUTREG(A0, h);
- moveHHi;
- SYSTEM.GETREG(D0, err)
- END MoveHHi;
- PROCEDURE [NOSTKCHK] MemError* (): MacTypes.OSErr;
- BEGIN
- RETURN err
- END MemError;
- (** Pointer and Handle Manipulation **)
- PROCEDURE [NOSTKCHK] HandToHand* (VAR theHndl: Handle): INTEGER;
- BEGIN
- SYSTEM.PUTREG(A0, theHndl);
- handToHand;
- SYSTEM.GETREG(D0, err);
- SYSTEM.GETREG(A0, theHndl);
- RETURN err
- END HandToHand;
- PROCEDURE [NOSTKCHK] PtrToHand* (srcPtr: Ptr; VAR dstHndl: Handle; size: LONGINT): INTEGER;
- BEGIN
- SYSTEM.PUTREG(A0, srcPtr);
- SYSTEM.PUTREG(D0, size);
- ptrToHand;
- SYSTEM.GETREG(D0, err);
- SYSTEM.GETREG(A0, dstHndl);
- RETURN err
- END PtrToHand;
- PROCEDURE [NOSTKCHK] PtrToXHand* (srcPtr: Ptr; dstHndl: Handle; size: LONGINT): INTEGER;
- BEGIN
- SYSTEM.PUTREG(A0, srcPtr);
- SYSTEM.PUTREG(A1, dstHndl);
- SYSTEM.PUTREG(D0, size);
- ptrToXHand;
- SYSTEM.GETREG(D0, err);
- RETURN err
- END PtrToXHand;
- PROCEDURE [NOSTKCHK] HandAndHand* (hand1, hand2: Handle): INTEGER;
- BEGIN
- SYSTEM.PUTREG(A0, hand1);
- SYSTEM.PUTREG(A1, hand2);
- handAndHand;
- SYSTEM.GETREG(D0, err);
- RETURN err
- END HandAndHand;
- PROCEDURE [NOSTKCHK] PtrAndHand* (pntr: Ptr; hndl: Handle; size: LONGINT): INTEGER;
- BEGIN
- SYSTEM.PUTREG(D0, size);
- SYSTEM.PUTREG(A0, pntr);
- SYSTEM.PUTREG(A1, hndl);
- ptrAndHand;
- SYSTEM.GETREG(D0, err);
- RETURN err
- END PtrAndHand;
- (** **)
- PROCEDURE [NOSTKCHK] MaxBlock* (): LONGINT;
- VAR res: LONGINT;
- BEGIN
- maxBlock;
- SYSTEM.GETREG(D0, res);
- RETURN res
- END MaxBlock;
- PROCEDURE [NOSTKCHK] PurgeSpace* (VAR total, contig: LONGINT);
- BEGIN
- purgeSpace;
- SYSTEM.GETREG(D0, total);
- SYSTEM.GETREG(A0, contig)
- END PurgeSpace;
- PROCEDURE [NOSTKCHK] StackSpace* (): LONGINT;
- BEGIN
- stackSpace;
- SYSTEM.GETREG(D0, err)
- END StackSpace;
- PROCEDURE [NOSTKCHK] NewEmptyHandle* (): Handle;
- VAR h: Handle;
- BEGIN
- newEmptyHandle;
- SYSTEM.GETREG(D0, err);
- SYSTEM.GETREG(A0, h);
- RETURN h
- END NewEmptyHandle;
- PROCEDURE [NOSTKCHK] HSetRBit* (h: Handle);
- BEGIN
- SYSTEM.PUTREG(A0, h);
- hSetRBit;
- SYSTEM.GETREG(D0, err)
- END HSetRBit;
- PROCEDURE [NOSTKCHK] HClrRBit* (h: Handle);
- BEGIN
- SYSTEM.PUTREG(A0, h);
- hClrRBit;
- SYSTEM.GETREG(D0, err)
- END HClrRBit;
- PROCEDURE [NOSTKCHK] HGetState* (h: Handle): MacTypes.Set;
- VAR s: MacTypes.Set;
- BEGIN
- SYSTEM.PUTREG(A0, h);
- hGetState;
- SYSTEM.GETREG(D0, s);
- RETURN s
- END HGetState;
- PROCEDURE [NOSTKCHK] HSetState* (h: Handle; flags: MacTypes.Set);
- BEGIN
- SYSTEM.PUTREG(A0, h);
- SYSTEM.PUTREG(D0, flags);
- hSetState;
- SYSTEM.GETREG(D0, err)
- END HSetState;
- END MacMemoryMgr.
- TextControllers.StdCtrlDesc
- TextControllers.ControllerDesc
- Containers.ControllerDesc
- Controllers.ControllerDesc
- TextRulers.StdRulerDesc
- TextRulers.RulerDesc
- TextRulers.StdStyleDesc
- TextRulers.StyleDesc
- TextRulers.AttributesDesc
- Geneva
- Documents.ControllerDesc
-